perm filename PALSAI.SAI[PNT,HE] blob sn#466144 filedate 1979-08-10 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	BEGIN "PALSAI"
C00005 ENDMK
C⊗;
BEGIN "PALSAI"
COMMENT THIS PROGRAM IS USED TO TAKE THE PAL FILE INTOPS.PAL AND MAKE IT
	SAIL READABLE BY PRODUCING JUST THE MAKEOP DEFINITIONS
	AND REWRITING THEM OUT ONTO INTOPS.SAI on the PPN of the job calling it;

INTEGER RCHAN,RBRCHAR,REOF,RFLAG;
INTEGER WCHAN,WBRCHAR,WEOF,WFLAG;
INTEGER PCODE_INDEX;

OPEN(RCHAN←GETCHAN,"DSK",0,2,0,1000,RBRCHAR,REOF);
LOOKUP(RCHAN,"INTOPS.PAL[AL,HE]",RFLAG);
IF RFLAG THEN OUTSTR("
COULD NOT LOOKUP FILE INTOPS.PAL[AL,HE]
")
	ELSE BEGIN "FOUNDFILE"
	STRING LINE,WORD,GARB;
	INTEGER BRCHAR;
	INTEGER CRBREAK,CHARBREAK,WORDENDBREAK;
	SETBREAK(CRBREAK←GETBREAK,'15,'12&'14,"ISNK");
	SETBREAK(CHARBREAK←GETBREAK,"ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890",NULL,"IKR");
	SETBREAK(WORDENDBREAK←GETBREAK,"ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890",NULL,"XKR");
	OPEN(WCHAN←GETCHAN,"DSK",0,0,2,0,0,0);
	ENTER(WCHAN,"INTOPS.SAI",WFLAG);
	OUT(WCHAN,"COMMENT ⊗ This file is written by program PALSAI.
	Any changes made by E will not hold once PALSAI is run again. ⊗;

DEFINE INTOPS ""[]"" = [

");
	PCODE_INDEX←0;
	WHILE NOT REOF DO
		BEGIN "GETALINE"
		LINE←INPUT(RCHAN,CRBREAK);
		IF LENGTH(LINE) > 6 THEN
			BEGIN
			IF EQU(LINE[1 TO 6] ,"MAKEOP") THEN
			BEGIN "MAKEOP"
			OUT(WCHAN,"MAKEOP(");
			LINE←LINE[7 TO ∞];
			GARB←SCAN(LINE,CHARBREAK,BRCHAR);
			WORD←SCAN(LINE,WORDENDBREAK,BRCHAR);
			OUT(WCHAN,WORD&",");
			GARB←SCAN(LINE,CHARBREAK,BRCHAR);
			WORD←SCAN(LINE,WORDENDBREAK,BRCHAR);
			OUT(WCHAN,WORD&","&CVS(PCODE_INDEX←PCODE_INDEX+2)&")
");
			END;
		END;
		END "GETALINE";
	OUT(WCHAN,"
];");
	CLOSE(WCHAN);
	RELEASE(WCHAN);
	END "FOUNDFILE";
END "PALSAI";